package ve.usb.crm.hibernate;

import ve.usb.cohesion.runtime.LocalDate;import java.util.HashSet;
import java.util.Set;

public class Oportunidad implements java.io.Serializable, ve.usb.cohesion.runtime.Auditable {

    /** Creates a new instance of Oportunidad */
    public Oportunidad() {}
    
    /**
     * Holds value of property id.
     */
    private Long id;

    /**
     * Getter for property id.
     * @return Value of property id.
     */
    public Long getId() {
        return this.id;
    }

    /**
     * Holds value of property idOportunidad.
     */
    private long idOportunidad;

    /**
     * Getter for property idOportunidad.
     * @return Value of property idOportunidad.
     */
    public long getIdOportunidad() {
        return this.idOportunidad;
    }

    /**
     * Setter for property idOportunidad.
     * @param idOportunidad New value of property idOportunidad.
     */
    public void setIdOportunidad(long idOportunidad) {
        this.id = this.idOportunidad = idOportunidad;
    }

    /**
     * Holds value of property contactos.
     */
    private Set<ContactoOportunidad> contactos = new HashSet<ContactoOportunidad>();

    /**
     * Getter for property contactos.
     * @return Value of property contactos.
     */
    public Set<ContactoOportunidad> getContactos() {
        return this.contactos;
    }

    /**
     * Setter for property contactos.
     * @param contactos New value of property contactos.
     */
    public void setContactos(Set<ContactoOportunidad> contactos) {
        this.contactos = contactos;
    }

    /**
     * Add an element to set property contactos
     * and sets elements's property oportunidad.
     * @param element New element to be added to contactos.
     */
    public void addToContactos(ContactoOportunidad element) {
        element.setOportunidad(this);
        contactos.add(element);
    }

    /**
     * Removes and old element from set contactos
     * and sets element's property oportunidad to null.
     * @param old The element to be removed from contactos
     */
    public void removeFromContactos(ContactoOportunidad old) {
        contactos.remove(old);
        old.setOportunidad(null);
    }
    /**
     * Holds value of property nombre.
     */
    private String nombre = "";

    /**
     * Getter for property nombre.
     * @return Value of property nombre.
     */
    public String getNombre() {
        return this.nombre;
    }

    /**
     * Setter for property nombre.
     * @param nombre New value of property nombre.
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * Holds value of property tipo.
     */
    private String tipo = "";

    /**
     * Getter for property tipo.
     * @return Value of property tipo.
     */
    public String getTipo() {
        return this.tipo;
    }

    /**
     * Setter for property tipo.
     * @param tipo New value of property tipo.
     */
    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

    /**
     * Holds value of property origenCampanya.
     */
    private String origenCampanya = "";

    /**
     * Getter for property origenCampanya.
     * @return Value of property origenCampanya.
     */
    public String getOrigenCampanya() {
        return this.origenCampanya;
    }

    /**
     * Setter for property origenCampanya.
     * @param origenCampanya New value of property origenCampanya.
     */
    public void setOrigenCampanya(String origenCampanya) {
        this.origenCampanya = origenCampanya;
    }

    /**
     * Holds value of property fechaCierre.
     */
    private java.util.Date fechaCierre;

    /**
     * Getter for property fechaCierre.
     * @return Value of property fechaCierre.
     */
    public java.util.Date getFechaCierre() {
        return this.fechaCierre;
    }

    /**
     * Setter for property fechaCierre.
     * @param fechaCierre New value of property fechaCierre.
     */
    public void setFechaCierre(java.util.Date fechaCierre) {
        if (fechaCierre==null || fechaCierre instanceof LocalDate)
            this.fechaCierre = fechaCierre;
        else this.fechaCierre = new LocalDate(fechaCierre);
    }

    /**
     * Holds value of property etapa.
     */
    private Categoria etapa;

    /**
     * Getter for property etapa.
     * @return Value of property etapa.
     */
    public Categoria getEtapa() {
        return this.etapa;
    }

    /**
     * Setter for property etapa.
     * @param etapa New value of property etapa.
     */
    public void setEtapa(Categoria etapa) {
        this.etapa = etapa;
    }
    /**
     * Holds value of property probabilidad.
     */
    private double probabilidad;

    /**
     * Getter for property probabilidad.
     * @return Value of property probabilidad.
     */
    public double getProbabilidad() {
        return this.probabilidad;
    }

    /**
     * Setter for property probabilidad.
     * @param probabilidad New value of property probabilidad.
     */
    public void setProbabilidad(double probabilidad) {
        this.probabilidad = probabilidad;
    }

    /**
     * Holds value of property importe.
     */
    private String importe = "";

    /**
     * Getter for property importe.
     * @return Value of property importe.
     */
    public String getImporte() {
        return this.importe;
    }

    /**
     * Setter for property importe.
     * @param importe New value of property importe.
     */
    public void setImporte(String importe) {
        this.importe = importe;
    }

    /**
     * Holds value of property origenCandidato.
     */
    private String origenCandidato = "";

    /**
     * Getter for property origenCandidato.
     * @return Value of property origenCandidato.
     */
    public String getOrigenCandidato() {
        return this.origenCandidato;
    }

    /**
     * Setter for property origenCandidato.
     * @param origenCandidato New value of property origenCandidato.
     */
    public void setOrigenCandidato(String origenCandidato) {
        this.origenCandidato = origenCandidato;
    }

    /**
     * Holds value of property descripcion.
     */
    private String descripcion = "";

    /**
     * Getter for property descripcion.
     * @return Value of property descripcion.
     */
    public String getDescripcion() {
        return this.descripcion;
    }

    /**
     * Setter for property descripcion.
     * @param descripcion New value of property descripcion.
     */
    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    /**
     * Holds value of property cuenta.
     */
    private Cuenta cuenta;

    /**
     * Getter for property cuenta.
     * @return Value of property cuenta.
     */
    public Cuenta getCuenta() {
        return this.cuenta;
    }

    /**
     * Setter for property cuenta.
     * @param cuenta New value of property cuenta.
     */
    public void setCuenta(Cuenta cuenta) {
        this.cuenta = cuenta;
    }
    /**
     * Holds value of property respOportunidad.
     */
    private Personal respOportunidad;

    /**
     * Getter for property respOportunidad.
     * @return Value of property respOportunidad.
     */
    public Personal getRespOportunidad() {
        return this.respOportunidad;
    }

    /**
     * Setter for property respOportunidad.
     * @param respOportunidad New value of property respOportunidad.
     */
    public void setRespOportunidad(Personal respOportunidad) {
        this.respOportunidad = respOportunidad;
    }
    /**
     * Holds value of property equipo.
     */
    private Set<PersonalOportunidad> equipo = new HashSet<PersonalOportunidad>();

    /**
     * Getter for property equipo.
     * @return Value of property equipo.
     */
    public Set<PersonalOportunidad> getEquipo() {
        return this.equipo;
    }

    /**
     * Setter for property equipo.
     * @param equipo New value of property equipo.
     */
    public void setEquipo(Set<PersonalOportunidad> equipo) {
        this.equipo = equipo;
    }

    /**
     * Add an element to set property equipo
     * and sets elements's property oportunidad.
     * @param element New element to be added to equipo.
     */
    public void addToEquipo(PersonalOportunidad element) {
        element.setOportunidad(this);
        equipo.add(element);
    }

    /**
     * Removes and old element from set equipo
     * and sets element's property oportunidad to null.
     * @param old The element to be removed from equipo
     */
    public void removeFromEquipo(PersonalOportunidad old) {
        equipo.remove(old);
        old.setOportunidad(null);
    }

    /**
     * Holds value of property esActivo.
     */
    private boolean esActivo;

    /**
     * Getter for property esActivo.
     * @return Value of property esActivo.
     */
    public boolean getEsActivo() {
        return this.esActivo;
    }

    /**
     * Setter for property contactoUsuario.
     * @param esActivo New value of property esActivo.
     */
    public void setEsActivo(boolean esActivo) {
        this.esActivo = esActivo;
    }

    /**
     * Holds value of property concretado.
     */
    private boolean concretado;

    /**
     * Getter for property concretado.
     * @return Value of property concretado.
     */
    public boolean getConcretado() {
        return this.concretado;
    }

    /**
     * Setter for property contactoUsuario.
     * @param concretado New value of property concretado.
     */
    public void setConcretado(boolean concretado) {
        this.concretado = concretado;
    }




    public String toString() {
        return "<Oportunidad id='C" + this.id +
      //idOportunidad
      //contactos
      "\" nombre =\"" + nombre +
      "\" tipo =\"" + tipo +
      "\" origenCampanya =\"" + origenCampanya +
      "\" fechaCierre =\"" + fechaCierre +
        ((etapa==null) ? "" : "\" etapa =\"C" + etapa.getId()) +

      "\" probabilidad =\"" + probabilidad +
      "\" importe =\"" + importe +
      "\" origenCandidato =\"" + origenCandidato +
      "\" descripcion =\"" + descripcion +
        ((cuenta==null) ? "" : "\" cuenta =\"C" + cuenta.getId()) +

        ((respOportunidad==null) ? "" : "\" respOportunidad =\"C" + respOportunidad.getId()) +

      //equipo

        "'/>";
    }

}